class Contabilita::FattureFornitoreController < DefaultController
  require_role self.parent_name.underscore
  record_select :search_on => [:numero, :data_fattura], :order_by => :numero, :full_text_search => true 
  
  active_scaffold :fattura_fornitore do |config|
    config.label = Application.controller_label(self)
    config.subform.columns = [:name]
    list.sorting = [{:data_fattura => 'DESC'}, {:numero => 'DESC'}]
    config.actions.add :field_search, :config_list, :export

    # definizione colonne
    columns = [ :numero, :data_fattura, :partner, :totale, :imponibile, :iva,
      :descrizione, :centri_costo, :data_scadenza, :saldata, :metodo_pagamento,
      :conto_finanziario, :data_pagamento, :note_pagamento, :fattura, :note]
    columns_list = [ :numero, :data_fattura, :partner, :totale, :centri_costo,
      :data_scadenza, :saldata, :data_pagamento ]
    columns_search = [ :numero, :partner, :data_fattura, :saldata ]

    # visualizzazione colonne
    config.columns = config.list.columns = columns
    config.show.columns = config.update.columns = config.create.columns = config.field_search.columns = columns
    config.config_list.default_columns = columns_list
    config.field_search.columns = columns_search + columns
    config.field_search.columns.exclude :fattura, :note
    config.columns[:fattura].sort_by :sql => 'fattura_file_name'

    # configurazione colonne
    config.columns[:saldata].form_ui = :checkbox
    [:partner].each { |i|
      config.columns[i].form_ui = :record_select
      config.columns[i].options = {:multiple => true}
    }
    [:metodo_pagamento, :centri_costo, :conto_finanziario].each { |i|
      config.columns[i].form_ui = :select
      config.columns[i].search_ui = :multi_select
    }
    [:data_fattura, :data_pagamento].each { |i|
      config.columns[i].form_ui = :calendar_date_select
      config.columns[i].options = {:year_range => [6.years.ago, 0.years.from_now]}
    }
    [:data_fattura, :data_pagamento, :note_pagamento, :descrizione, :centri_costo].each { |i|
      config.columns[i].inplace_edit = :ajax
    }
    [:descrizione,:note_pagamento].each { |i|
      config.columns[i].options = NOTE_TEXTAREA
    }
    [:totale, :imponibile, :iva].each { |i|
      config.columns[i].options[:format] = :currency
      config.columns[i].calculate = :sum
    }
    
    # subgroup
    config.columns[:note].collapsed = true
    dati_pagamento = [:saldata, :metodo_pagamento, :conto_finanziario, :data_pagamento, :note_pagamento]
    config.create.columns.add_subgroup "Dati pagamento" do |group|
      group.add(dati_pagamento)
      group.collapsed = true
    end
    config.update.columns.add_subgroup "Dati pagamento" do |group|
      group.add(dati_pagamento)
      #group.collapsed = true
    end
    dettaglio_importo = [:imponibile, :iva]
    config.create.columns.add_subgroup "Dettaglio importo" do |group|
      group.add(dettaglio_importo)
      group.collapsed = true
    end
    config.update.columns.add_subgroup "Dettaglio importo" do |group|
      group.add(dettaglio_importo)
      group.collapsed = true
    end
    
    # azioni
    config.columns[:centri_costo].clear_link
    config.action_links.add "Note", :action => 'nested', :parameters => {:associations => :note}, :type => :member
    config.columns[:numero].set_link('show', :inline => true)
    config.columns[:partner].set_link('show', :controller => 'anagrafiche/partners')
  end

  def in_attesa
    params[:filter] = 'in_attesa'
    active_scaffold_config.label = Application.controller_label(self) + " (in attesa)"
    index
  end

  protected
  
  def set_conditions
    case params[:filter]
    when 'in_attesa'
      ['saldata IS NULL or saldata = 0']
    else
      []
    end
  end

  def conditions_for_collection
    set_conditions
  end

  def record_select_conditions_from_controller
    set_conditions
  end 
end
